<?php

global $_GPC_OFF;

/**
 * удаляем "магические" квоты из предоставленного массива и всех содержащихся в нём массивов
 *
 * gpc - GET, POST, COOKIE
 */
if (get_magic_quotes_gpc()) {
	function php_fuckQuotes( array &$a )
	{
		foreach($a as $k => $v) {
			if(is_array($v)) {
				php_fuckQuotes( $a[$k] );
			}	else {
				$a[$k] = stripslashes($v);
			}
		}
	}
	php_fuckQuotes($_GET);
	php_fuckQuotes($_POST);
	php_fuckQuotes($_COOKIE);
	php_fuckQuotes($_REQUEST);
}
$_GPC_OFF = true;

function php_parse_str ($value, &$out=NULL)
{
	global $_GPC_OFF;
	parse_str($value, $out);
	if (get_magic_quotes_gpc()) {
		php_fuckQuotes($out);
	}
	return $out;
} // end of function php_parse_str

function php_use_script ($___path, $___env=array())
{
	extract ($___env);
	return eval(use_script($___path));
} // end of function use_script

function php_is_script ($filename)
/**
 * Узнать, является-ли файл скриптом, учитывая include_path.
 *
 * http://bugs.php.net/bug.php?id=6932
 *
 * @param mixed $filename имя файла
 * @access public
 * @return boolean true если можно include, require и т.п., иначе false.
 */
{
	static $scripts=array();
	if (isset($scripts[$filename])) {
		return $scripts[$filename];
	}
	if ($fp = @fopen($filename, 'r', 1)) {
		fclose($fp);
		return ($scripts[$filename] = $filename);
	} else {
		return ($scripts[$filename] = false);
	}
} // end of function is_script

function php_get_memory_limit() 
/**
 * Вернет кол-во доступной для PHP памяти
 *
 * @return int 
 * @author Alexander Sibiryakov
 **/
{
	$mem_limit = ini_get('memory_limit');
	if (strlen($mem_limit) > 0) return (trim($mem_limit,"M") * 1024 * 1024); else return 8388608; // по дефолту 8Мб
}

if (!defined('PHP_CACHE_DIR')) define('PHP_CACHE_DIR', '/tmp/');
function use_script($filename)
{
	static $use_scripted=array();

	if (!isset($use_scripted[$filename])) {
		$cache_name = PHP_CACHE_DIR.$filename;
		if (!is_file($cache_name)) {
			if ($fp = @fopen($filename, 'r', 1)) {
				$source = stream_get_contents($fp);
				$source = packer_pack($source);
				fclose($fp);
				if (!is_dir($cached_dir = dirname($cache_name))) {
					mkdir($cached_dir, 0777, true);
				}
				file_put_contents($cache_name, $source);
			}
		}
		$use_scripted[$filename] = "include '".$cache_name."';";
	}
	return $use_scripted[$filename];
}
function use_script_once($filename)
{
	static $use_scripted=array();

	if (!isset($use_scripted[$filename])) {
		$cache_name = PHP_CACHE_DIR.$filename;
		if (!is_file($cache_name)) {
			if ($fp = @fopen($filename, 'r', 1)) {
				$source = stream_get_contents($fp);
				$source = packer_pack($source);
				fclose($fp);
				if (!is_dir($cached_dir = dirname($cache_name))) {
					mkdir($cached_dir, 0777, true);
				}
				file_put_contents($cache_name, $source);
			}
		}
		$use_scripted[$filename] = 'include "'.$cache_name.'";';
		return $use_scripted[$filename];
	}
	return NULL;
}

